package com.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dto.OrdersMO;
import com.dto.OrdersSearchForm;
import com.dto.ReportForm;
import com.entity.Orders;
import com.vo.OrdersVO;
import com.vo.ReportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 *  入库订单Mapper 接口
 * </p>
 *
 * @author aiou
 * @since 2025-06-10
 */
@Mapper
public interface OrdersMapper{

    /**
     * 统计订单数量
     * @return
     */
    Integer selectCount();

    /**
     * 新增订单数据
     * @param orders
     * @return
     */
    int insert(Orders orders);

    /**
     * 查询订单展示数据
     * @param form
     * @return
     */
    List<OrdersVO> list(@Param("form") OrdersSearchForm form);

    /**
     * 批量删除订单
     * @param ordersMO
     * @return
     */
    int batchDelete(OrdersMO ordersMO);

    /**
     * 批量审核订单
     * @param ordersMO
     * @return
     */
    int batchVerify(OrdersMO ordersMO);

    /**
     * 批量作废订单
     * @param ordersMO
     * @return
     */
    int batchInvalid(OrdersMO ordersMO);

    /**
     * 根据订单编号查询
     * @param orderNo
     * @return
     */
    Orders selectByOrderNo(String orderNo);

    /**
     * 订单详情页面修改订单
     * @param orders
     * @return
     */
    int update(Orders orders);

    /**
     * 查询Order
     * @param orderNo
     * @return
     */
    Orders selectOne(String orderNo);

    /**
     * 根据order_no删除订单
     * @param orderNo
     * @return
     */
    int delete(String orderNo);

    /**
     * 采购退货单：分页查询
     * @param form
     * @return
     */
    List<OrdersVO> ordersReturnVOList(@Param("form") OrdersSearchForm form);

    /**
     * 销售订单：分页查询
     * @param form
     * @return
     */
    List<OrdersVO> saleVOList(@Param("form") OrdersSearchForm form);
    /**
     * 销售退货订单：分页查询
     * @param form
     * @return
     */
    List<OrdersVO> saleReturnVOList(@Param("form") OrdersSearchForm form);

    /**
     * 仓库明细：分页查询
     * @param form
     * @return
     */
    List<ReportVO> reportList(@Param("form") ReportForm form);
    /**
     * 仓库明细：Excel导出(查询Excel内容)
     * @return
     */
    List<ReportVO> reportExportList();
}
